#define QUEUE_IMPLEMENTATION
#include "queue.hol.h"
#include <stdio.h>

// 回调函数示例：打印整数
void print_int(void *value, void *user_data) {
    printf("%d ", *(int*)value);
}

int main() {
    // 初始化队列
    queue_t q;
    queue_new(&q);

    // 入队操作
    int a = 10, b = 20, c = 30;
    queue_push(&q, &a);
    queue_push(&q, &b);
    queue_push(&q, &c);

    // 打印队列
    queue_print_int(&q, "示例队列");

    // 查看队列首尾元素
    printf("队头元素: %d\n", *(int*)queue_front(&q));
    printf("队尾元素: %d\n", *(int*)queue_back(&q));

    // 遍历队列
    printf("遍历队列: ");
    queue_foreach(&q, print_int, NULL);
    printf("\n");

    // 复制队列
    queue_t q2;
    queue_new(&q2);
    queue_copy(&q2, &q);
    queue_print_int(&q2, "复制的队列");

    // 出队操作
    while (!queue_empty(&q)) {
        printf("出队元素: %d\n", *(int*)queue_pop(&q));
    }

    // 清理队列
    queue_clear(&q);
    queue_clear(&q2);

    return 0;
}
